package com.zb.mobile.user.service;

import com.zb.entity.AccounLoginInfo;
import com.zb.entity.OrderGoodsCodeVo;
import com.zb.entity.SelectVo;
import com.zb.exception.SMSException;
import com.zb.mobile.*;
import com.zb.result.PageUtil;
import com.zb.vo.OrderUserVo;

import java.util.List;
import java.util.Map;

/**
 * @Author WEN
 * @Date 2023/11/2 0002
 **/
public interface ConUserMobileOrderService {
    /**
     * 服务进度-获取工单状态数量，客户ID获取
     * @param userId 客户ID
     * @return
     */
    Map<String, Object> getOrderStatusQty(Long custAccId, Long userId, UserOrderSelectVo selectVo) throws SMSException;

    /**
     * 服务进度-获取工单列表
     * @param custAccId 商家ID
     * @param userId 客户ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getOrderList(Long custAccId, Long userId, UserOrderSelectVo selectVo) throws SMSException;

    /**
     * 服务进度-根据工单ID获取工单列表详情
     * @param workId 工单ID
     * @return
     */
    UserOrderDetailVo getOrderDetail(Long workId);

    /**
     * 服务进度-根据工单ID获取工单列表详情的服务进度
     * @param workId 工单ID
     * @param pageUtil 分页
     * @return
     */
    Map<String, Object> getOrderServiceLog(Long workId, PageUtil pageUtil);

    /**
     * 服务进度-获取工单列表详情的商品信息
     * @param workId 工单ID
     * @return
     */
    List<UserOrderGoodsVo> getOrderDetailGoodsInfo(Long workId);

    /**
     * 服务进度-获取工单列表详情的工单信息
     * @param workId 工单ID
     * @return
     */
    UserOrderInfoVo getOrderDetailOrderInfo(Long workId);

    /**
     * 服务进度-获取工单列表详情的服务商信息
     * @param workId 工单ID
     * @return
     */
    UserOrderNetworkInfo getOrderDetailNetworkInfo(Long workId);

    /**
     * 服务进度-获取工单列表详情的客户信息
     * @param workId 工单ID
     * @return
     */
    OrderUserVo getOrderDetailUserInfo(Long workId);

    /**
     * 服务进度-取消服务工单
     * @param loginInfo
     * @param workId 工单ID
     */
    void cancelOrder(AccounLoginInfo loginInfo, Long workId);

    /**
     * 服务进度-改约日期时间
     * @param loginInfo
     * @param orderExpectedTimeVo
     */
    void updateExpectedTime(AccounLoginInfo loginInfo, UserOrderExpectedTimeVo orderExpectedTimeVo);

    /**
     * 历史工单报单-历史工单列表
     * @param loginInfo 商家ID
     * @param selectVo
     * @return
     */
    Map<String, Object> getUserHistoryOrder(AccounLoginInfo loginInfo, SelectVo selectVo);

    /**
     * 历史工单报单-历史工单列表详情
     * @param workId 工单ID
     * @return
     */
    UserHistoryOrderDetailVo getUserHistoryOrderDetail(Long workId);

    /**
     * 历史工单报单-历史工单商品信息
     * @param workId 工单ID
     * @param pageUtil 分页对象
     * @return
     */
    Map<String, Object> getUserHistoryOrdeGoods(Long workId, PageUtil pageUtil);

    /**
     * 历史工单报单-历史工单商品编码信息
     * @param workGoodsId 工单商品ID
     * @return
     */
    List<OrderGoodsCodeVo> getUserHistoryOorderGoodsCodes(Long workGoodsId);

    /**
     * 历史工单报单-获取历史工单申请售后的商品
     * @param workId 工单ID
     * @return
     */
    UserHistoryOrderApplySaleVo gettUerHistoryOrderApplySale(Long workId);

    /**
     * 移动端客户报单
     * @param loginInfo
     * @param userOrderVo
     * @return
     */
    Map<String, Object> saveUserOrder(AccounLoginInfo loginInfo, UserOrderVo userOrderVo);



}
